package com.fastplatform.repository;

import com.fastplatform.entity.Menu;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface MenuRepository extends JpaRepository<Menu, Long>, JpaSpecificationExecutor<Menu> {
    
    /**
     * 根据父ID查找菜单列表（使用JPA命名推断）
     */
    List<Menu> findByParentIdOrderBySort(Long parentId);
    
    /**
     * 根据父ID和状态查找菜单列表（使用JPA命名推断）
     */
    List<Menu> findByParentIdAndStatusOrderBySort(Long parentId, Integer status);
    
    /**
     * 查找所有有效的菜单（未删除且启用的）（使用JPA命名推断）
     */
    List<Menu> findByDeletedFalseAndStatusOrderBySort(Integer status);
    
    /**
     * 查找所有有效的菜单（未删除）（使用JPA命名推断）
     */
    List<Menu> findByDeletedFalseOrderBySort();
    
    // 注意：以下方法已改为在Service层使用Specification查询
    // 如需使用，请在MenuService中调用MenuSpecification的相应方法
    
    // 示例：
    // List<Menu> menus = menuRepository.findAll(MenuSpecification.findMenusByUserId(userId));
    // List<Menu> menus = menuRepository.findAll(MenuSpecification.findMenusByUserIdAndMenuType(userId, menuType));
    // List<Menu> menus = menuRepository.findAll(MenuSpecification.findMenusByRoleId(roleId));
}